package 基础练习;/**
 * @author： li
 * @date： 2022-01-09 11:15
 * @version 1.0
 */

import java.util.Scanner;

/**
 * @author： ljm
 * @date： 2022-01-09 11:15
 * @version 1.0
 */
public class 阶乘计算02 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int i,j;
        int jw = 0;			//进位
        int temp;			//存放中间结果
        int max = 4000;		//4000位
        int[] a = new int[max];
        a[0]=1;
        for (i = 2; i <=n; i++) {
            for (j = 0; j <max; j++) {
                temp = a[j] * i + jw;         //当该位未赋值，即*0
                jw = temp / 10;             //取十位（进位）
                a[j] = temp % 10;
            }
        }
        //找出前置0和结果之间的界限
        for(i= max-1;i >= 0;i --){
            if(a[i] != 0)
                break;
        }
        System.out.println(i+"位");

        for(int al=i;al>=0;al--){
            System.out.print(a[al]);
        }

    }
}
